a2acee8949174ffced5b56e232ddbc6d7cb522f4,findbugs/src/java/edu/umd/cs/findbugs/detect/SwitchFallthrough.java,SwitchFallthrough,sawOpcode,#number#,60
Before Change
inSwitch = false;
if (inSwitch) {
if (getPC() == switchPC + switchOffsets[nextIndex]
&& switchOffsets[nextIndex] != getDefaultSwitchOffset()
) {
if (nextIndex > 0 && reachable) {
int endOfPreviousCase = lineNumbers.getSourceLine(getPC() - 1);
int startOfNextCase = lineNumbers.getSourceLine(getPC());
int previousLabel = switchLabels[nextIndex - 1];
int nextLabel = switchLabels[nextIndex];
if (!(previousLabel == 10 && nextLabel == 13)
&& !(previousLabel == 13 && nextLabel == 10)
&& startOfNextCase - endOfPreviousCase <= 2) {
System.out.println("Reached the switch for " + switchLabels[nextIndex]
+ " at line number " + startOfNextCase
+ " in " + getFullyQualifiedMethodName());
}
/*
System.out.println("switchPC: " + switchPC);
System.out.println("nextIndex: " + nextIndex);
System.out.println("switchOffset[nextIndex]: " + switchOffsets[nextIndex]);
for(int i = 0; i < switchOffsets.length; i++)
System.out.println(" " + switchLabels[i] + " " +
(switchPC + switchOffsets[i]));
*/
}
do {
nextIndex++;
if (nextIndex >= switchOffsets.length) {
inSwitch = false;
break;
}
} while (getPC() == switchPC + switchOffsets[nextIndex]);
}
}
After Change
if ((lastSeen != GOTO) && (lastSeen != GOTO_W)) {
bugReporter.reportBug(new BugInstance("SF_SWITCH_FALLTHROUGH", NORMAL_PRIORITY)
.addClassAndMethod(this)
.addSourceLineRange(this, lastPC, getPC()));
}
/* Not sure why this is here, isn't lack of goto enough?